package com.micro.modual.mapper;


import com.micro.core.frame.mapper.BasicsMapper;
import com.micro.modual.entity.SystemResourceAuth;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
*  <h1></h1>
 * @author levelcoder
 * @version V1.0.0
 * @email LevelCoder@126.com
 * @date 2020-08-04 00:11:10
 */
public interface SystemResourceAuthMapper extends BasicsMapper<SystemResourceAuth>{


    /**
     * <h2>判断资源是否分配</h2>
     * @param resourceCode 资源编号
     * @return
     */
    int hasResourceDistribution(@Param("resourceCode") String resourceCode);

    /**
     * <h2>根据角色编号,菜单编号查询所分配的元素列表</h2>
     * @param roleCode         角色编号
     * @param parentCode       菜单编号:只有资源类型为元素时候parentCode才会存在
     * @return
     */
    List<String> findResourceAuthElementList(@Param("roleCode") String roleCode, @Param("parentCode") String parentCode);

    /**
     * <h2>根据角色编号查询所拥有的菜单权限</h2>
     * @param roleCode
     * @return
     */
    List<String> findRoleResourceMenu(@Param("roleCode") String roleCode);

    /**
     * <h2>根据角色编号 移除菜单授权下信息</h2>
     * @param roleCode 角色编号
     */
    void deleteRoleResourceMenuByRoleCode(@Param("roleCode") String roleCode);

    /**
     * <h2>根据角色编号,资源编号移除授权信息</h2>
     * @param roleCode       角色编号
     * @param resourceCode    资源编号
     */
    void removeRoleResourceElement(@Param("roleCode") String roleCode, @Param("resourceCode") String resourceCode);

    /**
     * <h2>根据角色编号删除授权信息</h2>
     * @param roleCode
     */
    void deleteByRoleCode(@Param("roleCode") String roleCode);
}
